#ifndef __B103E03B_3164_436c_8299_4052729399AC__
#define __B103E03B_3164_436c_8299_4052729399AC__

/////////////////////////////////////////////////////////////////////////////////////////
// 
namespace xos
{
    // 
    // xos api interface
    // 
    class i_xos
    {
    public:
        // 
        // enum for xos object type
        // 
        enum enumXosObj
        {
            XOS_OBJ_DIR_MONITOR,

            XOS_OBJ_CRT,

            XOS_OBJ_DYNAMIC,

            XOS_OBJ_THREAD,

            XOS_OBJ_FILE,
            XOS_OBJ_DIR,

            XOS_OBJ_MISC,

            XOS_OBJ_TCP,
            XOS_OBJ_UDP,

            XOS_OBJ_SELECT,
            XOS_OBJ_AIO,

            XOS_OBJ_EVENT,
            XOS_OBJ_MUTEX,
            XOS_OBJ_LOCK,

            XOS_OBJ_ACCEPTOR,
            XOS_OBJ_HEART,
            XOS_OBJ_TIME,

            XOS_OBJ_CALLBACK,

            XOS_OBJ_BIG_BUF,
            XOS_OBJ_BUF,
            XOS_OBJ_MSG
        };

    public:
        virtual ~i_xos(){}

    public:
        // 
        // create xos object
        // 
        virtual int create( enumXosObj enumType, void ** ppv ) = 0;

        // 
        // release xos api
        // 
        virtual int release() = 0;
    };

    // 
    // export function for i_xos
    // 
    typedef int ( * i_create )( i_xos ** ppv );
}

#endif // __B103E03B_3164_436c_8299_4052729399AC__
